データベースの歴史 RDB編
前段
SQL Serverを学んでいるだけだとつまらん. そもそもデータベースって何?から始める.
どんなものにでもストーリー, 歴史があり、変遷を経て現行状態・状況が形成されている.
ルーツ(なんで生まれたんだろうか), 分岐を含めたフォーク, 進化変遷を辿ることで解像度が高くなる.
歴史, 変遷を辿ることで、原理・原則・ゲームルールが理解できていくはず.
まあ, とにかく楽しみたいって感じ!!
リファレンス
データベースとは?
使途・存在意義
構成要素
データ管理ソフトウェア(アプリケーション), 計算処理, OS, ハードウェアとかって
データ管理方法(構造), データ保存のファイル(データ本体), データが保存されるファイルの管理アプリケーション(実現を担うソフトウェア), ソフトウェアが動くハードウェア, OS, OSの言語, データ演算プログラムって感じで分けて考えることができそう。
データベースでの大事な概念
データに対する一つの論理的操作の事をトランザクションと呼ばれるけど、ACIDっていう性質をもつべきと言われている。不可分性(Atomicity), 一貫性(Consistency), 独立性(Isolation), 永続性(Durability)である。
思ったこと
ミッション、意識すべき点を「データベースでの大事な概念」にもち、その手段として構成要素を工夫していくことが大事なんだな...
ソフトウェア以前ってどうやって管理していた?
https://gyazo.com/05d8667454121edc9cbb2e1331a3dcb1
1950年以前はパンチカードを使ってデータの保存を行っていた。極端に言えば、上記の画像のような。
そして、書き込みや読み込みはプログラムがインストールされた機械で行っていた。データ、つまりパンチカードの管理は人の手で行われていた。当時はオフィスの1つのフロア全部がまるまる、パンチカードを保管したり機械に読み込ませたりするために使われた。パンチの穴は2進数, 10進数で計算するプログラムに対応する形で位置されていた。
The management of data first became an issue in the 1950s, when computers were slow, clumsy, and required massive amounts of manual labor to operate. Several computer-oriented companies used entire floors to warehouse and “manage” only the punch cards storing their data. These same companies used other floors to maintain sorters, tabulators, and banks of card punches. Programs of the time were setup in a binary or decimal form, and were read from toggled on/off switches at the front of the computer, or magnetic tape, or even punch cards. (https://www.dataversity.net/brief-history-data-management/) 個人の推測
とにかくデータの管理は、集約とか構造化されておらず、フォーマットに対して記述がされていたのがパンチカードで、それの管理や他プログラムとのつなぎこみを人の手を使ってやっていたって感じ(かな)。
後述する言語の発展とともに、人で担っていたデータ管理もプログラム化がスピードアップしていったと推測される。
プログラム言語の状況は?
1950年代以前、計算する側のプログラムは「Absolute Machine Language」と呼ばれていたらしい。絶対(完全?)機械言語っていう感じで、とにかく低級言語ってことだと思う。
その後、1950年代後半にアセンブリ言語が登場・普及した。1と0の複雑な文字列ではなく、アルファベットの文字が使えるようになり、人間にとって理解しやすい形になった。プログラムの開発を進めやすい形になった。それ以降、FORTRAN, Lisp, COBOL, BASIC, C, C++などが発展していった。
記憶媒体の状況は?
コンピューターの発展とともに記憶先(データ保存先)も紙脱却していった(電子化)していった。
たぶん、1940s辺りから技術としては実現可能な状態になった、と推測される。
世の中、一般に普及したのはもっと先だと思われるが。
1944年 ツーゼがZ4を作成。メモリ部分は機械式に戻る。
1945年 ジョン・フォン・ノイマンのEDVACに関する報告書の第一草稿が発表。プログラム内蔵方式が提唱される。
やっぱり、戦争ってのは技術発展・進化の側面から考えるとすごい効果的。
物理的にどのようなデータ管理をしているんだろうか?
実際にコンピューターの中でどのようにデータを管理しているんだろうか?
(勝手なイメージだけど)物理的にはデータ1つ1つはファイルとして保存されている。そして、そのファイルを管理するマスタファイルがいて全体を論理的に整理されているように管理している(んだろう)。要はファイルシステムを活用している。データのまとまりの大きさや、論理的な構造が設計次第で変わってくる(っていう感じ)。
参照
冒頭で記載したが、時代とともにデータの管理方法も進化してきた。データの一貫性はもちろん、人が扱いやすくとか、より効率的にシステムリソースを使うとか、耐障害の強度を上げたり、可用性を高めたりとか、大規模データを扱うとかっていうニーズに答えるべく進化が促されてきた。
論理的にどのようなデータ管理をしているんだろうか?
データモデル理論がどんな発展を遂げてきたか、である。管理を実現するデータベース管理システムも含めて言及していく。
列挙すると、hierarchical database/構造型(階層型)データベース, network database/ネットワークデータベース, relational database/関係データベース, object-oriented database/オブジェクト指向データベース, XML database/XMLデータベース, multi-dimensional database/多次元データベース, columnar storage/列指向データベース,in-memory database/インメモリデータベース。
データベース概念の登場
MaGee「源泉ファイル」(1959年)の論文にて、データを構造化して、管理を効率的・容易にできるというメリットが言及された。構造型データベース(Structural Database)の概念の登場。
「Journal of the ACM Volume 6, Number 1, January 1959」に、「Generalization: Key to successful electronic data processing」という論文を発表しており、ここからデータベースの歴史がはじまります。この論文はコンピュータに蓄積されるさまざまなデータを源泉ファイル(source file)という概念に集約することにより、データの重複の回避とシステム拡張の効率化が可能になると書かれています。また、実際にシステムとして構築した場合、莫大なファイルから効率よくターゲットとなるデータを検索するための効率的な手段が要求されることやデータの保守技術や機密保持の技術が必要になることなども書かれています。いわば、この論文はデータベースシステムの概念を書いたものである( https://monoist.atmarkit.co.jp/mn/articles/0805/20/news108.html ) その後、親子関係が1:Nだったり、M:Nの構造のデータベースが開発された。
階層型データベース/Hierarchical Database
https://gyazo.com/bdf81dd7b8db1e827d5cb6124e2d8e4a
網型データベース/Network Database
https://gyazo.com/2673650faa96d6a2d9da23cd7cff7c04
ちなみに、現実にデータベースが製品として登場するのは,
そして、おなじみの関係データベース(Relatoinal Database)が登場
1969年 コッド RDBに関する最初の論文
Coddの関係型データモデルについて。
数学でいう「関係」の概念に基づいたデータモデルである。すなわち,データベースに含まれるべきすべてのデータを複数個の表形式で表現し,これらの表を「関係」と見なすことにより,データベースを集合論的に定式化したものである。以前のデータモデルが,ポインタとか繰返し構造のような物理構造に伴う複雑な構成要素を持っているのに対し,関係型モデルは「関係」という構造のみに基づき,それ以外の構成要素を全く必要としない,極めて単純化されたものであったため,発表当時は関係者の間で非常に大きな反響を呼んだ。( https://www.accumu.jp/back_numbers/vol12/データベースの理論とその発展.html ) その後、RDBへのアクセスを可能にした言語、SQLの登場
1974年 IBM、SEQUEL言語の開発、IBM、System RでのRDB実装
他企業も乗っかってくる。
1989年 Microsoft SQL Server
1993年 Microsoft SQL Server for Windows
MIcrosoftがサーバに乗り出してきた。RDBを搭載するサーバを次々と発表する。
その後、NoSQL, オブジェクト指向データベース, XMLデータベース, 多次元データベース, データウェアハウス, インメモリデータベース, 列指向データベース...などと周辺領域合わせて発展したきた。
なぜ"関係"モデルという名前なの?
RDBが動的である、というのはうなずける。特定の範疇をもって集合としてデータをまとめ上げる(関係)。そして、それらを必要に応じて動的に結合を行って別の関係を作り出して、データ表現を行うっていうこと。
読みたい